import java.util.*;

public class Main {
    static class Node{
        int w;
        int h;
        public Node(int w,int h){
            this.w=w;
            this.h=h;
        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            Node[] nodes = new Node[n];
            for (int i = 0; i < n; i++) {
                int index = scanner.nextInt();
                nodes[index-1] = new Node(scanner.nextInt(), scanner.nextInt());
            }
            Arrays.sort(nodes, new Comparator<Node>() {
                @Override
                public int compare(Node o1, Node o2) {
                    if (Integer.compare(o1.h, o2.h) != 0) {
                        return Integer.compare(o1.h, o2.h);
                    } else {
                        return Integer.compare(o1.w, o2.w);
                    }
                }
            });
            int[] dp = new int[n];
            int max = 0 ;
            for (int i = 0; i < n; i++) {
                dp[i] = 1;
                for (int j = i - 1; j >= 0; j--) {
                    if (nodes[i].w > nodes[j].w || (nodes[i].w == nodes[j].w && nodes[i].h == nodes[j].h)) {
                        dp[i] = Math.max(dp[i], dp[j] + 1);
                    }
                }
                max = Math.max(max, dp[i]);
            }
            System.out.println(max);
        }
    }

















    public static void main1(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            int[] arr=new int[n];
            for(int i=0;i<n;i++){
                arr[i]=scanner.nextInt();
            }
            int k=scanner.nextInt();
            int d=scanner.nextInt();
            long[][] max=new long[k][n];
            long[][] min=new long[k][n];
            for(int i=0;i<k;i++){
                for(int j=0;j<n;j++){
                    max[i][j]=1;
                    if(i==0){
                        min[i][j]=arr[j];
                        max[i][j]=arr[j];
                    }
                }
            }
            for(int i=1;i<k;i++){
                for(int j=0;j<n;j++){
                    for(int p=1;p<=d;p++){
                        if(j-p>=0){
                            if(arr[j]>0){
                                min[i][j]=Math.min(min[i][j],min[i-1][j-p]*arr[j]);
                                max[i][j]=Math.max(max[i][j],max[i-1][j-p]*arr[j]);
                            }else{
                                min[i][j]=Math.min(min[i][j],max[i-1][j-p]*arr[j]);
                                max[i][j]=Math.max(max[i][j],min[i-1][j-p]*arr[j]);
                            }
                        }
                    }
                }
            }
            long MAX=0;
            for(int i=0;i<n;i++){
                MAX=Math.max(MAX,max[k-1][i]);
            }
            System.out.println(MAX);
        }
    }


























//    public static void main(String[] args) {
//        Scanner scanner=new Scanner(System.in);
//        Map<String,Integer> map=new LinkedHashMap<>();
//        while (scanner.hasNextLine()){
//            String s=scanner.nextLine();
//            if (s == null || s.equals("")) {
//                break;
//            }
//            String[] str=s.split(" ");
//            String key=str[0].substring(str[0].lastIndexOf('\\')+1)+" "+str[1];
//            map.put(key,map.containsKey(key)?map.get(key)+1:1);
//        }
//        List<Map.Entry<String,Integer>> list=new ArrayList<>(map.entrySet());
//        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
//            @Override
//            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//                return o2.getValue().compareTo(o1.getValue());
//            }
//        });
//        for(int i=0;i<8;i++){
//            if(list.size()==i){
//                break;
//            }
//            String[] str=list.get(i).getKey().split(" ");
//            if(str[0].length()>16){
//                str[0]=str[0].substring(str[0].length()-16);
//            }
//            System.out.println(str[0]+" "+str[1]+" "+list.get(i).getValue());
//        }
//    }













    public int MoreThanHalfNum_Solution(int [] array){
        Arrays.sort(array);
        return array[array.length/2];
    }
}
